package org.example.trigger.api;

import org.example.trigger.api.dto.*;
import org.example.types.model.Response;

import java.util.List;

/**
 * @Author: PengHao
 * @CreateTime: 2025-07-19  09:20
 * @Description: 抽奖服务接口
 */
public interface IRaffleStrategyService {
    /**
     *策略装配接口
     * @param strategyId 策略ID
     * @return 装配结果
     */
    Response<Boolean>strategyArmory(Long strategyId);

    /**
     * 查询奖品列表接口
     * @param raffleAwardListRequestDTO 查询奖品列表参数
     * @return 奖品列表返回值
     */
    Response<List<RaffleAwardListResponseDTO>>queryRaffleAwardList(RaffleAwardListRequestDTO raffleAwardListRequestDTO);

    /**
     * 查询抽奖策略权重规则，给用户展示出抽奖N次后必中奖奖品范围
     *
     * @param request 请求对象
     * @return 权重奖品配置列表「这里会返回全部，前端可按需展示一条已达标的，或者一条要达标的」
     */
    Response<List<RaffleStrategyRuleWeightResponseDTO>> queryRaffleStrategyRuleWeight(RaffleStrategyRuleWeightRequestDTO request);

    /**
     * 随机抽奖接口
     * @param raffleRequestDTO 随机抽奖参数
     * @return 抽奖结果返回值
     */
    Response<RaffleStrategyResponseDTO>randomRaffle(RaffleStrategyRequestDTO raffleRequestDTO);
}
